package cn.lingyangwl.agile.system.service;

import cn.lingyangwl.agile.system.model.entity.SysUserOnline;
import cn.lingyangwl.agile.model.module.auth.LoginUser;

/**
 * 在线用户 服务层
 * @author shenguangyang
 */
public interface SysUserOnlineService {
    /**
     * 通过登录地址查询信息
     *
     * @param ipaddr 登录地址
     * @param user 用户信息
     * @return 在线用户信息
     */
    SysUserOnline selectOnlineByIpaddr(String ipaddr, LoginUser user);

    /**
     * 通过用户名称查询信息
     *
     * @param userName 用户名称
     * @param user 用户信息
     * @return 在线用户信息
     */
    SysUserOnline selectOnlineByuserName(String userName, LoginUser user);

    /**
     * 通过登录地址/用户名称查询信息
     *
     * @param ipaddr 登录地址
     * @param userName 用户名称
     * @param user 用户信息
     * @return 在线用户信息
     */
    SysUserOnline selectOnlineByInfo(String ipaddr, String userName, LoginUser user);

    /**
     * 设置在线用户信息
     *
     * @param user 用户信息
     * @return 在线用户
     */
    SysUserOnline loginUserToUserOnline(LoginUser user);

    /**
     * 强退用户
     * @param userIdStr 多个id, 逗号分割
     */
    void forceLogoutBatch(String userIdStr);
}
